package p06_Aware与InitializingBean;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.support.GenericApplicationContext;

/**
 * InitializingBean是一个初始化接口，实现这个接口，bean在初始化阶段就会调用该接口实现类的afterPropertiesSet方法
 */
public class _2_InitializingBean implements InitializingBean {

    public static void main(String[] args) {
        GenericApplicationContext context = new GenericApplicationContext();
        context.registerBean(_2_InitializingBean.class);
        context.refresh();
        context.close();
        /**
         * 这些功能，通过@PostConstruct注解都能实现，为什么还要实现接口呢？
         * @PostConstruct是bean的后处理器实现的，在某些情况下会失效
         * 而这些接口是spring容器原生功能，不会失效
         */
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("我被初始化啦...");
    }
}
